// UTF-8 encoded
/* "qDroid v.2009.04.27 pre-alfa-2"
 * tcpiplink_bot.h
 *
 *  Created on: 17.11.2008
 *      Author: Denjs
 *
 * Это демо-класс с базовой функциональностью, демонстрирующий
 * структуры необходимые для создания класса-расширения qDROID.
 * Эдесь описаны только важные для успешной загрузки и использования
 * функции.
 *
 * Это класс можно использовать как шаблон для написания
 * своего расширения qDROID.
 *
 * замените "tcpiplink_bot" на имя вашего класса здесь,
 * исходнике класса tcpiplink_bot.cpp,
 * исходнике функций библиотек в libqtsofarm.cpp
 * и переименуйте файлы данного класса соответвующим образом.
 * Не забудьте про "tcpiplink_bot_H_"
 *
 * Далее, можно наследовать tcpiplink_bot не от QObject,
 * а от стороннего класса, который вы хотите использовать в QtScript.
 * и переписать критичные функции описанные в данном демо-классе.
 *
 * Не забудьте, что только "слотовые" функции могут быть вызваны из скрипта.
 *
 */

#ifndef tcpiplink_bot_H_
#define tcpiplink_bot_H_

#include <QtCore>
#include <QtScript>

//собственно класс который мы оборачиваем в оболочку
//#include "./../../../../../OTPD/classes/hardware_comm/t_tcpiplink_otpd.h"
#include <t_tcpiplink_otpd.h>
//^^^^^^^^^^^ после включения соотв. каталогов в INCLUDEPATH в .pro файле

//проведём наследование 
class tcpiplink_bot :public t_tcpiplink_otpd //QObject
{
    Q_OBJECT

public:
        tcpiplink_bot();
        virtual ~tcpiplink_bot();

    	//это (ниже) нужно что бы можно было засунуть класс в контейнер QList
    	// возможно так-же связано с работой QtScript движка - см функции
		// после определения класса
		//
    	// спец. настройки для QtScript (v 2008.11.25)
    	// Шаг 1 из 8
        tcpiplink_bot(const tcpiplink_bot &other);

    	//это (ниже) нужно что бы можно было засунуть t_FileList в контейнер QList
    	// возможно так-же связано с работой QtScript движка - см функции
    	// после определения класса
    	//
    	// спец. настройки для QtScript (v 2008.11.25)
    	// Шаг 2 из 8
        tcpiplink_bot& operator=(const tcpiplink_bot &other);


    	// спец. настройки для QtScript (v 2008.11.25)
    	// Шаг 2.2 из 8
                bool operator==(const tcpiplink_bot &other ) const;


public slots:
	QString GetId();

};

/*  tcpiplink_bot */
//----------------------------------------------------------------------
//нужно чтобы можно было передавать эти элементы как параметры в функции внутри QtScript
// спец. настройки для QtScript (v 2008.11.25)
// Шаг 3 из 8
Q_DECLARE_METATYPE(tcpiplink_bot*);

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 4 из 8
static QScriptValue f_qdroid_tcpiplink_bot_toScriptValue(QScriptEngine *engine, tcpiplink_bot* const &in)
{ return engine->newQObject(in); }

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 5 из 8
static void f_qdroid_tcpiplink_bot_fromScriptValue(const QScriptValue &object, tcpiplink_bot* &out)
{ out = qobject_cast<tcpiplink_bot*>(object.toQObject()); }

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 6 из 8
//конструктор для последующего его определения как new в скрипте
static QScriptValue f_qdroid_tcpiplink_bot_constructor(QScriptContext *QSContext, QScriptEngine *QSEngine)
	{
		//t_BaseBot BaseBot;
		QScriptValue QtSObject;
                QtSObject=QSEngine->newQObject(new tcpiplink_bot()); //
		return QtSObject;
	}

// шаги 7 и 8 должны быть выполнены в программе которая собирается использовать данный класс совместно со скриптовым движком
//// спец. настройки для QtScript (v 2008.11.25)
//// Шаг 7 из 8
//// - это qScriptRegisterMetaType регистрация но это нужно сделать в головном классе
//// например в глобальной функции "define__qdroid_qtscript_functions()"
////// t_FileList TYPE defenition
//	qScriptRegisterMetaType(_QSEngine, f_qdroid_tcpiplink_bot_toScriptValue, f_qdroid_tcpiplink_bot_fromScriptValue);

//// спец. настройки для QtScript (v 2008.11.25)
//// Шаг 8 из 8
////- определение конструктора в контексте скрипта
////// t_FileList NEW constructor defenition
//	QScriptValue fun5_constr = _QSEngine->newFunction(f_qdroid_tcpiplink_bot_constructor);
//	_QSEngine->globalObject().setProperty("tcpiplink_bot", fun5_constr);

static int f_qdroid_tcpiplink_bot_register(QScriptEngine *_QSEngine)
	{
		//шаг 7 регистрация метатипа
                qScriptRegisterMetaType(_QSEngine, f_qdroid_tcpiplink_bot_toScriptValue, f_qdroid_tcpiplink_bot_fromScriptValue);
		//шаг 8 регистрация конструктора
                _QSEngine->globalObject().setProperty("tcpiplink_otpd", _QSEngine->newFunction(f_qdroid_tcpiplink_bot_constructor));
		return 0;
	}
//----------------------------------------------------------------------



#endif /* tcpiplink_bot_H_ */
